﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Noris.Schedule.Support.Sql;
using System.Xml.Linq;

namespace Noris.Tools.FrxEditor.Data
{
    /// <summary>
    /// Třída, která tvoří datový základ jedné části reportu (reportu, grupy, grafu...)
    /// </summary>
    public class ReportData
    {
        #region Property s daty
        /// <summary>
        /// Název datového zdroje
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// Data nejsou definována
        /// </summary>
        public bool IsEmpty
        {
            get { return String.IsNullOrEmpty(this.DataQuery); }
        }
        /// <summary>
        /// SQL dotaz pro získání dat
        /// </summary>
        public string DataQuery { get; set; }
        /// <summary>
        /// Deklarace argumentů pro SQL dotaz
        /// </summary>
        public string DataArguments { get; set; }
        /// <summary>
        /// Tabulka s načtenými daty
        /// </summary>
        public SimpleDataTable Table { get; private set; }
        /// <summary>
        /// Načte do své tabulky (Table) data podle aktuálního dotazu (DataQuery)
        /// </summary>
        public void LoadData()
        {
            SimpleDataTable table = SimpleDataTable.Load(this.DataQuery);
        }
        #endregion
        #region Serializace dat
        /// <summary>
        /// Zajistí uložení datové části Bandu do XML elementu
        /// </summary>
        /// <param name="node"></param>
        public void XmlSerializeDataTo(XElement node)
        {
            XElement xData = new XElement(XML_REPORTDATA);
            xData.SetAttributeValue("Query", this.DataQuery);
            node.Add(xData);
        }
        /// <summary>
        /// Zajistí načtení datové části Bandu z XML elementu
        /// </summary>
        /// <param name="node"></param>
        /// <param name="overrideId"></param>
        public void XmlFillDataFrom(XElement node, bool overrideId)
        {
        }
        /// <summary>
        /// Název XML elementu, v němž je obsažena definice dat bandu (ReportData)
        /// </summary>
        public const string XML_REPORTDATA = "datasource";
        #endregion

        #region Vizuální editace dat
        /// <summary>
        /// Zobrazí formulář umožňující zadání dat
        /// </summary>
        public void ShowSettings()
        {
            using (ReportData_Form form = new ReportData_Form())
            {
                form.ReportData = this; // .EditedText = "SELECT top 100 * FROM lcs.subjekty"; // "SELECT * FROM lcs.subjekty s LEFT OUTER JOIN lcs.tabulka t on t.cislo_subjektu = s.cislo_subjektu";
                form.ShowDialog();
            }
        }
        #endregion
    }

}
